//
//@author jltxseo
// Created by junlintianxia on 2018/7/26.
//

#include <util/ShaderHelper.h>
#include "../../util/Shader.h"
#include "util/XqLog.h"
#include "TutorialLessonTwo.h"
#include "../shaders/shaderR.h"
#define  LOG_TAG    "TutorialLessonTwo"

TutorialLessonTwo::TutorialLessonTwo() {

}


TutorialLessonTwo::~TutorialLessonTwo() {

}

void TutorialLessonTwo::create() {
    TutorialLesson::create();
    mShader = new Shader(ShaderHelper::readShaderCodeFromFile("tutorial/shaders/lesson2_vertex_shader.glsl"),ShaderHelper::readShaderCodeFromFile("tutorial/shaders/lesson2_fragment_shader.glsl"));
    //三角形设置程序中顶点位置属性
    mShader->setVertexAttribPointer("a_Position",
                                    3,                  // size  每个顶点属性的数据个数。可能的取值是1、2、3或者4.初始值是4
                                    GL_FLOAT,           // type 数组中每个数据的类型。可能的取值是：GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, or GL_DOUBLE。初始值是GL_FLOAT。
                                    GL_FALSE,           // normalized?  指定顶点数在被访问的时候是否需要被归一化。
                                    4 * 7,                  // stride  两个连续顶点的属性之间的偏移量。7个数据为一组，每个数据浮点数占4
                                    triangle1VerticesData            // array buffer offset 指向数组中的第一个顶点属性的第一个数据。
    );

    //三角形设置程序中颜色属性
    mShader->setVertexAttribPointer("a_Color",
                                    4,
                                    GL_FLOAT,
                                    GL_FALSE,
                                    4 * 7,
                                    triangle1VerticesData + 3
    );

}

void TutorialLessonTwo::change(int width, int height) {
    TutorialLesson::change(width,height);
}

void TutorialLessonTwo::draw() {
    TutorialLesson::draw();
    if(mShader->programID > 0){
        mShader->use();
        //绘制三角形
        glDrawArrays(GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle
    } else{
        LOGE(LOG_TAG,"Failed to create program");
    }


}